#include <iostream>
using namespace std;

class Person
{
protected:
	string _name = "小李子"; //名字
	int _num = 111;  //身份证号
};
class Student:public Person
{
public:
	void Print()
	{
		cout << "姓名:" << _name << endl;
		cout << "身份证号：" << Person::_num << endl; //指定作用域访问
		cout << "学号：" << _num <<endl; //默认先访问子类的， 隐藏 / 重定义
	}
protected:
	int _num = 999;   
};

class A
{
public:
	void fun()
	{
		cout << "func()" << endl;
	}
};
class B : public A
{
public:
	void fun(int i) //A的fun和B的fun不属于重载，因为重载要求处于同一作用域，因此为隐藏
	{
		A::fun();
		cout << "func(int i)->" << i << endl;
	}
};


//下面哪些是正确的   BD
// A. fun构成重载
// B. fun构成隐藏
// C. fun构成重写
// D. 编译报错
// E. 运行错误


void Test()
{
	B b;
	//b.fun(); //调用父类编译报错
	b.fun(10); //调用子类
	b.A::fun();//直接调用父类
};


int main()
{
	Student s;
	s.Print();

	//Test();

	return 0;
}